/*
Date:20210527 23:47Pm
key:指针的操作往往都是1.先考虑第一个节点 2.后面的循环是考虑当前节点，与遇上一个节点
 */
class Solution {
public:
    ListNode* deleteNode(ListNode* head, int val) 
    {
        if(head->val==val)
        {
            return head->next;
        }
        ListNode* pre=head;
        ListNode* p=head->next;
        while(p->next!=NULL)
        {
            if(p->val==val)
            {
                pre->next=p->next;
                return head;
            }
            pre=p;
            p=p->next;
        }
        pre->next=NULL;
        return head;
    }
};